Backup Base de Dados PostgreSQL [pg_dump]

Publicado por Emiliano Eloi Silva Barbosa 16/04/2007

[ Hits: 30.192 ]

Homepage: http://emilianoeloi.com.br

Download pgbackup.sh




Esse script gera backup de bases de dados PostGreSQL usando o pg_dump baseado em 'inúmeras variáveis' que informam o destino do backup e o nome do arquivo, etc.

  



Esconder código-fonte

#!/bin/sh
# cript que gera backup de bases de dados PostGreSQL
# Referência: http://www.htmlstaff.org/postgresqlmanual/app-pgdump.html
# Emiliano ESB<emilianoeloi@gmail.com>
# C 2005 04 20
# R 2007 04 11[adaptado para o VOL]
#
# VARIAVEIS ##################
vU="postgres"     # Usuario no PostGreSQL
vP="pgsql"        # Senha
vB=$1             # Base De dados
vBI="/usr/local/pgsql/bin/" # Diretorio raiz dos binarios do PostGreSQL
vR="/BackupSuporte/"        # Diretorio raiz
vD="BasesDeDados/"          # Destino do Backup
vPre="basePGSQL"            # Prefixo no nome do arquivo de saida
vE=".dmp"                   # extencao do arquivo de saida
vH="localhost"              # Host do servidor
vAno=`date +%Y` #Ano
vMes=`date +%m` #Mes
vDia=`date +%d` #Dia
vHor=`date +%H` #Hora
vMin=`date +%M` #Min
vCod=`date +%N` #Código date [date (GNU coreutils) 5.3.0]
vDat="$vAno$vMes$vDia-$vHor$vMin-$vCod"
vA=$vPre"-"$vB"-"$vDat$vE
# VALIDAÇÃO ##################
if [ -z $vU ]; then
        echo "Sem usuário";
        exit 0;
fi
if [ -z $vP ]; then
        echo "sem senha";
        exit 0;
fi
if [ -z $vB ]; then
        echo "informe o nome da base de dados";
        exit 0;
fi
# BACKUP #####################
echo "# Gerando backup. Aguarde..."
echo "# Destino: $vR$vD"
echo "# Nome do arquivo: $vA"
$vBI""pg_dump -U $vU -h $vH --format=c --file=$vR$vD$vA $vB

Scripts recomendados

envia emails

CoDe_X - Compactador/Descompactador de arquivos e diretórios usando Xdialog

Hora certa - Observatório Nacional

Install/Update ClamAV

Visualizar capas de álbuns de músicas no MPD/MPC/NCMPCPP


  

Comentários
[1] Comentário enviado por augustomarinho em 22/04/2007 - 16:02h

O script de backup realmente é muito bom. Gostaria de fazer uma contribuição, pois no ambiente que tenho montado aqui em casa quem comanda a execução do PostgreSQL é o usuário postgres, inclusive as permissões do diretórios data onde encontram-se os dados pertence a este mesmo usuário. Com isso, para executar o comando pg_dump se faz necessário estar com as permissões deste usuário, e pode ser feito com sudo -u postgres pg_dump ...... e o restante.

Se este script for colocado no cron, para fazer o backup de forma automática, na minha opnião, é importante levar em consideração esta observação.

[2] Comentário enviado por crfjunior em 09/10/2012 - 15:21h

como faço pra omitir a solicitação de senha no script?

[3] Comentário enviado por Ends em 11/10/2013 - 01:26h

Olá...
Interessante o script, porém para agendar no CRON, é necessário que o script não gere saída na tela.
E vi que este script gera algumas saídas na tela. Como você faz para agendar no CRON da forma como se apresenta o script?

Abaixo o script que utilizo, claro que mais simples... não consigo agendar no CRON com ele.

PGPASSWORD=senha_do_banco
export PGPASSWORD

date=$(date '+%d-%m-%Y')

/usr/lib/postgresql/9.1/bin/pg_dump --host localhost --port 5525 --username postgres --format tar --blobs --encoding LATIN1 --verbose --file /opt/backup_sistema/sistema_erp-$date.backup nome_do_banco




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts